<<<<<<< .mine
#include<stdio.h>
#include<stdlib.h>
#include <stdio.h>
#ifdef WIN32
#include <curses.h>
#else
#include <ncurses.h>
#endif
#include"ncursesLaby.h"





void init_curses()
{
    initscr();
    if(has_colors() == FALSE)
	{	endwin();
		printf("Your terminal does not support color\n");
		exit(1);
	}
	start_color();
	init_pair(1, COLOR_BLACK, COLOR_BLACK);
	curs_set(0);
    keypad(stdscr,TRUE);
    clear();
    noecho();
    cbreak();



}

void affichJoueur (const Joueur * pJoueur, int i, int j,int noir, WINDOW *win)
{

if (noir)
    wattron(win,COLOR_PAIR(1));

mvwprintw( win,(pJoueur->y)+j, 3*(pJoueur->x)+i, "+");
wmove(win,0,0);

if (noir)
    wattroff(win,COLOR_PAIR(1));

}

void affichPrecedent(positionPreced position, int i,int j, WINDOW *win)
{
mvwprintw( win,(position.y)+j, 3*(position.x)+i, "+");
wmove(win,0,0);

}






void affichNcursesLaby(const labyrinthe *Laby, int x, int y, WINDOW *win)
{


int  i, j, coordx=0, coordy=0;
int direct;

for (i=x; i<=x+(GetDimxLabyrinthe(Laby)*3)-3; i=i+3)
{

coordy=0;

   for (j=y; j<y+GetDimyLabyrinthe(Laby); j++)
   {



   direct=3;


   if (GetH_B_G_D (GetcaseMatLabyrinthe(Laby, &coordx, &coordy),&direct) == false)

   mvwprintw( win,j, i, "___");//bas

   direct=1;
   if (GetH_B_G_D (GetcaseMatLabyrinthe(Laby, &coordx, &coordy),&direct) == false)

{

   if (j==y)

{



    if (i==x+(GetDimxLabyrinthe(Laby)*3)-3)



    mvwprintw( win,j-1, i, "__");// haut



    else
    mvwprintw( win,j-1, i, "___");// haut



   }



 }

   direct=4;
   if (GetH_B_G_D (GetcaseMatLabyrinthe(Laby, &coordx, &coordy),&direct) == false)
 {
if (i==x)
   {
    mvwprintw( win,j, i-1, "|"); // gauche
   }
}

  direct=2;

if (GetH_B_G_D (GetcaseMatLabyrinthe(Laby, &coordx, &coordy),&direct) == false)
 {

  mvwprintw( win,j, i+2, "|"); //droite
}


coordy++;
  }

coordx++;

}


}




void jeuNcurses (int x, int y, Jeu* pJeu, bool *gagner)
{

WINDOW *win;
int c, direct;
bool sortir;
positionPreced posPreced;

init_curses();

win = newwin( 100, 100, 0, 0 );
keypad(win, TRUE);

sortir = false;
posPreced.x=pJeu->entree.x;
posPreced.y=pJeu->entree.y;


do
{


affichNcursesLaby(&pJeu->Laby, x, y,win);

affichJoueur (&pJeu->joueur, x, y ,0, win);

c = wgetch(win);

wattron(win,COLOR_PAIR(1));
affichPrecedent(posPreced, x,y, win);
wattroff(win,COLOR_PAIR(1));

switch(c)
{
case KEY_RIGHT:
    direct=2;
    jeuDeplacement(pJeu,&direct);
    affichJoueur (&pJeu->joueur, x, y ,0, win);
    posPreced.x=pJeu->joueur.x;
    posPreced.y=pJeu->joueur.y;
    verifSortie(pJeu,gagner);
break;

case KEY_LEFT:
    direct=4;
    jeuDeplacement(pJeu,&direct);
    affichJoueur (&pJeu->joueur, x, y ,0, win);
    posPreced.x=pJeu->joueur.x;
    posPreced.y=pJeu->joueur.y;
    verifSortie(pJeu,gagner);

    break;

case KEY_UP:
    direct=1;
    jeuDeplacement(pJeu,&direct);
    affichJoueur (&pJeu->joueur, x, y ,0, win);
    posPreced.x=pJeu->joueur.x;
    posPreced.y=pJeu->joueur.y;
    verifSortie(pJeu,gagner);

    break;

case KEY_DOWN:
    direct=3;
    jeuDeplacement(pJeu,&direct);
    affichJoueur (&pJeu->joueur, x, y ,0, win);
    posPreced.x=pJeu->joueur.x;
    posPreced.y=pJeu->joueur.y;
    verifSortie(pJeu,gagner);

    break;

case 27:
sortir=false;
break;
}

refresh();

} while(!sortir && !(*gagner));

endwin();

}



void deplacement_Recursif_Ordi (Jeu *pJeu, int direction, int x, int y ,bool *gagner, WINDOW *win)
{
bool trouver=false;
int droite=2,gauche=4,haut=1, bas=3;
int c;
unsigned long vitesse=200000;
switch (direction)
{
if (*gagner==false )
{


case 1:

while (!GetH_B_G_D(GetcaseMatLabyrinthe(&pJeu->Laby,&pJeu->joueur.x, &pJeu->joueur.y),&haut) && (GetH_B_G_D(GetcaseMatLabyrinthe(&pJeu->Laby,&pJeu->joueur.x, &pJeu->joueur.y),&droite)))
    {
       c = wgetch(win);


        affichNcursesLaby(&pJeu->Laby, x, y,win);

        affichJoueur(&pJeu->joueur, x, y ,1, win);
        usleep(vitesse);
        depJoueurDroite(&pJeu->joueur,&pJeu->Laby);
        affichJoueur(&pJeu->joueur, x, y ,0, win);

        verifSortie(pJeu,gagner);
        if (*gagner)
        break;
        }

       if (GetH_B_G_D(GetcaseMatLabyrinthe(&pJeu->Laby,&pJeu->joueur.x, &pJeu->joueur.y),&haut))

       {

        c = wgetch(win);
        affichNcursesLaby(&pJeu->Laby, x, y,win);
        affichJoueur(&pJeu->joueur, x, y ,1, win);
        usleep(vitesse);
        depJoueurHaut(&pJeu->joueur,&pJeu->Laby);

        affichJoueur(&pJeu->joueur, x, y ,0, win);

        verifSortie(pJeu,gagner);
        if (*gagner)
        break;



        if (GetH_B_G_D(GetcaseMatLabyrinthe(&pJeu->Laby,&pJeu->joueur.x, &pJeu->joueur.y),&gauche))
        {
        c = wgetch(win);
        affichNcursesLaby(&pJeu->Laby, x, y,win);
        affichJoueur(&pJeu->joueur, x, y ,1, win);
        usleep(vitesse);
        depJoueurGauche(&pJeu->joueur,&pJeu->Laby);
        affichJoueur(&pJeu->joueur, x, y ,0, win);


        verifSortie(pJeu,gagner);
        if (*gagner)
        break;


        deplacement_Recursif_Ordi(pJeu,2,x, y ,gagner, win);
        }
        else

        {
          c=wgetch(win);

          deplacement_Recursif_Ordi(pJeu,3,x, y ,gagner, win);
        }
    }
  else   //if (!GetH_B_G_D(GetcaseMatLabyrinthe(&pJeu->Laby,&pJeu->joueur.x, &pJeu->joueur.y),&droite))
    {
      if (GetH_B_G_D(GetcaseMatLabyrinthe(&pJeu->Laby,&pJeu->joueur.x, &pJeu->joueur.y),&bas))

       deplacement_Recursif_Ordi(pJeu,4,x, y ,gagner, win);
      else
       deplacement_Recursif_Ordi(pJeu,2,x, y ,gagner, win);
     }



case 2:

    while (!GetH_B_G_D(GetcaseMatLabyrinthe(&pJeu->Laby,&pJeu->joueur.x, &pJeu->joueur.y),&bas) && (GetH_B_G_D(GetcaseMatLabyrinthe(&pJeu->Laby,&pJeu->joueur.x, &pJeu->joueur.y),&gauche)))
    {
        c = wgetch(win);
        affichNcursesLaby(&pJeu->Laby, x, y,win);
        affichJoueur(&pJeu->joueur, x, y ,1, win);
        usleep(vitesse);
        depJoueurGauche(&pJeu->joueur,&pJeu->Laby);
        affichJoueur(&pJeu->joueur, x, y ,0, win);

        verifSortie(pJeu,gagner);
        if (*gagner)
        break;
        }


    if(GetH_B_G_D(GetcaseMatLabyrinthe(&pJeu->Laby,&pJeu->joueur.x, &pJeu->joueur.y),&bas))
    {
        c = wgetch(win);
        affichNcursesLaby(&pJeu->Laby, x, y,win);
        affichJoueur(&pJeu->joueur, x, y ,1, win);
        usleep(vitesse);
        depJoueurBas(&pJeu->joueur,&pJeu->Laby);

        affichJoueur(&pJeu->joueur, x, y ,0, win);

        verifSortie(pJeu,gagner);
        if (*gagner)
        break;



        if (GetH_B_G_D(GetcaseMatLabyrinthe(&pJeu->Laby,&pJeu->joueur.x, &pJeu->joueur.y),&droite))
        {


        c = wgetch(win);
        affichNcursesLaby(&pJeu->Laby, x, y,win);
        affichJoueur(&pJeu->joueur, x, y ,1, win);
        usleep(vitesse);
        depJoueurDroite(&pJeu->joueur,&pJeu->Laby);

        affichJoueur(&pJeu->joueur, x, y ,0, win);
        verifSortie(pJeu,gagner);
        if (*gagner)
        break;
        deplacement_Recursif_Ordi(pJeu,1,x, y , gagner, win);
        }

    else
    {
      c=wgetch(win);
    deplacement_Recursif_Ordi(pJeu,4,x, y , gagner, win);
     }

    }
   else       //if (!GetH_B_G_D(GetcaseMatLabyrinthe(&pJeu->Laby,&pJeu->joueur.x, &pJeu->joueur.y),&gauche))
    {

        c=wgetch(win);
      if (GetH_B_G_D(GetcaseMatLabyrinthe(&pJeu->Laby,&pJeu->joueur.x, &pJeu->joueur.y),&haut))
        deplacement_Recursif_Ordi(pJeu,3,x, y ,gagner, win);
      else
        deplacement_Recursif_Ordi(pJeu,1,x, y ,gagner,  win);
     }
case 3:

  while (!GetH_B_G_D(GetcaseMatLabyrinthe(&pJeu->Laby,&pJeu->joueur.x, &pJeu->joueur.y),&gauche) && (GetH_B_G_D(GetcaseMatLabyrinthe(&pJeu->Laby,&pJeu->joueur.x, &pJeu->joueur.y),&haut)))
     {

         c = wgetch(win);
        affichNcursesLaby(&pJeu->Laby, x, y,win);
        affichJoueur(&pJeu->joueur, x, y ,1, win);
     usleep(vitesse);
        depJoueurHaut(&pJeu->joueur,&pJeu->Laby);

        affichJoueur(&pJeu->joueur, x, y ,0, win);

        verifSortie(pJeu,gagner);
        if (*gagner)
        break;
        }


    if(GetH_B_G_D(GetcaseMatLabyrinthe(&pJeu->Laby,&pJeu->joueur.x, &pJeu->joueur.y),&gauche))
    {
     c = wgetch(win);
        affichNcursesLaby(&pJeu->Laby, x, y,win);
        affichJoueur(&pJeu->joueur, x, y ,1, win);
     usleep(vitesse);
        depJoueurGauche(&pJeu->joueur,&pJeu->Laby);
        affichJoueur(&pJeu->joueur, x, y ,0, win);
        verifSortie(pJeu,gagner);
        if (*gagner)
          break;

    if (GetH_B_G_D(GetcaseMatLabyrinthe(&pJeu->Laby,&pJeu->joueur.x, &pJeu->joueur.y),&bas))
    {

        c = wgetch(win);
        affichNcursesLaby(&pJeu->Laby, x, y,win);
        affichJoueur(&pJeu->joueur, x, y ,1, win);
         usleep(vitesse);
        depJoueurBas(&pJeu->joueur,&pJeu->Laby);

        affichJoueur(&pJeu->joueur, x, y ,0, win);
        verifSortie(pJeu,gagner);
        if (*gagner)
        break;
        deplacement_Recursif_Ordi(pJeu,4,x, y ,gagner, win);

        }

    else
    {
        c = wgetch(win);
        affichNcursesLaby(&pJeu->Laby, x, y,win);
        affichJoueur(&pJeu->joueur, x, y ,1, win);
     usleep(vitesse);
        depJoueurGauche(&pJeu->joueur,&pJeu->Laby);

        affichJoueur(&pJeu->joueur, x, y ,0, win);
        verifSortie(pJeu,gagner);
        if (*gagner)
        break;
        deplacement_Recursif_Ordi(pJeu,2,x, y ,gagner,  win);
        }
    }


  else        //if (!GetH_B_G_D(GetcaseMatLabyrinthe(&pJeu->Laby,&pJeu->joueur.x, &pJeu->joueur.y),&haut))
    {

    verifSortie(pJeu,gagner);
    if (*gagner)
    break;
        c=wgetch(win);
      if (GetH_B_G_D(GetcaseMatLabyrinthe(&pJeu->Laby,&pJeu->joueur.x, &pJeu->joueur.y),&droite))
    deplacement_Recursif_Ordi(pJeu,1,x, y ,gagner, win);
      else
        deplacement_Recursif_Ordi(pJeu,4,x, y ,gagner,  win);
     }

case 4:

  while (!GetH_B_G_D(GetcaseMatLabyrinthe(&pJeu->Laby,&pJeu->joueur.x, &pJeu->joueur.y),&droite) && (GetH_B_G_D(GetcaseMatLabyrinthe(&pJeu->Laby,&pJeu->joueur.x, &pJeu->joueur.y),&bas)))
    {
        c = wgetch(win);
        affichNcursesLaby(&pJeu->Laby, x, y,win);
        affichJoueur(&pJeu->joueur, x, y ,1, win);
        usleep(vitesse);
        depJoueurBas(&pJeu->joueur,&pJeu->Laby);

        affichJoueur(&pJeu->joueur, x, y ,0, win);

        verifSortie(pJeu,gagner);
        if (*gagner)
        break;
        }
   if(GetH_B_G_D(GetcaseMatLabyrinthe(&pJeu->Laby,&pJeu->joueur.x, &pJeu->joueur.y),&droite))
    {
     c = wgetch(win);
        affichNcursesLaby(&pJeu->Laby, x, y,win);
        affichJoueur(&pJeu->joueur, x, y ,1, win);
      usleep(vitesse);
        depJoueurDroite(&pJeu->joueur,&pJeu->Laby);

        affichJoueur(&pJeu->joueur, x, y ,0, win);

        verifSortie(pJeu,gagner);
        if (*gagner)
        break;
        if (GetH_B_G_D(GetcaseMatLabyrinthe(&pJeu->Laby,&pJeu->joueur.x, &pJeu->joueur.y),&haut))

        {
      c = wgetch(win);
        affichNcursesLaby(&pJeu->Laby, x, y,win);
        affichJoueur(&pJeu->joueur, x, y ,1, win);
      usleep(vitesse);
        depJoueurHaut(&pJeu->joueur,&pJeu->Laby);

        affichJoueur(&pJeu->joueur, x, y ,0, win);

        verifSortie(pJeu,gagner);
        if (*gagner)
        break;


          deplacement_Recursif_Ordi(pJeu,3,x, y ,gagner,  win);
        }
        else



                      deplacement_Recursif_Ordi(pJeu,1,x, y ,gagner,  win);
        }

     }
   else  //if (!GetH_B_G_D(GetcaseMatLabyrinthe(&pJeu->Laby,&pJeu->joueur.x, &pJeu->joueur.y),&bas))
    {



        c=wgetch(win);
      if (GetH_B_G_D(GetcaseMatLabyrinthe(&pJeu->Laby,&pJeu->joueur.x, &pJeu->joueur.y),&gauche))
        deplacement_Recursif_Ordi(pJeu,2,x, y ,gagner, win);
      else
        deplacement_Recursif_Ordi(pJeu,3,x, y ,gagner,  win);
     }
     }
}


void jeuOrdiNcurses (int x, int y, Jeu* pJeu)
{

WINDOW *win;

int c, direct;
bool sortir, gagner;


init_curses();
init_pair(1, COLOR_BLACK, COLOR_BLACK);
win = newwin( 1000, 1000, 0, 0 );
keypad(win, TRUE);
	nodelay(win,true);
sortir=false;
gagner=false;

while (!gagner && !sortir)
{

int droite=2, bas=3;
if (GetH_B_G_D(GetcaseMatLabyrinthe(&pJeu->Laby,&pJeu->entree.x,&pJeu->entree.y),&droite))
{

        affichNcursesLaby(&pJeu->Laby, x, y,win);
        affichJoueur(&pJeu->joueur, x, y ,0, win);

        c=wgetch(win);

        affichJoueur(&pJeu->joueur, x, y ,1, win);

        depJoueurDroite(&pJeu->joueur,&pJeu->Laby);
        affichJoueur(&pJeu->joueur, x, y ,0, win);
        deplacement_Recursif_Ordi (pJeu,1,  x, y ,&gagner,  win);
}
else if (GetH_B_G_D(GetcaseMatLabyrinthe(&pJeu->Laby,&pJeu->entree.x,&pJeu->entree.y),&bas))
{

    affichNcursesLaby(&pJeu->Laby, x, y,win);
    affichJoueur(&pJeu->joueur, x, y ,0, win);
    deplacement_Recursif_Ordi (pJeu,4,  x, y ,&gagner, win);

}
else
{
    affichNcursesLaby(&pJeu->Laby, x, y,win);
    affichJoueur(&pJeu->joueur, x, y ,0, win);
    deplacement_Recursif_Ordi(pJeu,2,  x, y ,&gagner,  win);
}


refresh();

}


endwin();


}











=======
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
#include<assert.h>
#include <time.h>


#include"ncursesLaby.h"


void affichJoueur (const Joueur * pJoueur, int i, int j, WINDOW *win)
{



mvwprintw( win,(pJoueur->y)+j, 3*(pJoueur->x)+i, "+");
wmove(win,0,0);

}

void affichPrecedent(positionPreced position, int i,int j, WINDOW *win)
{
mvwprintw( win,(position.y)+j, 3*(position.x)+i, "+");
wmove(win,0,0);

}



void affichLabyNcurses (int x, int y, Jeu* pJeu)
{

WINDOW *win;
int c;
bool ok;
positionPreced posPreced;

initscr();



if(has_colors() == FALSE)
	{	endwin();
		printf("Your terminal does not support color\n");
		exit(1);
	}

start_color();








clear();
noecho();
cbreak();


win = newwin( 100, 100, 0, 0 );
keypad(win, TRUE);

ok = true;

posPreced.x=pJeu->entree.x;
posPreced.y=pJeu->entree.y;
do
{

int  i, j, coordx=0, coordy=0;
int direct;

for (i=x; i<=x+(GetDimxLabyrinthe(&pJeu->Laby)*3)-3; i=i+3)
{

coordy=0;

   for (j=y; j<y+GetDimyLabyrinthe(&pJeu->Laby); j++)
   {



   direct=3;


   if (GetH_B_G_D (GetcaseMatLabyrinthe(&pJeu->Laby, &coordx, &coordy),&direct) == false)

   mvwprintw( win,j, i, "___");//bas

   direct=1;
   if (GetH_B_G_D (GetcaseMatLabyrinthe(&pJeu->Laby, &coordx, &coordy),&direct) == false)

{

   if (j==y)

{



    if (i==x+(GetDimxLabyrinthe(&pJeu->Laby)*3)-3)



    mvwprintw( win,j-1, i, "__");// haut



    else
    mvwprintw( win,j-1, i, "___");// haut



   }



 }

   direct=4;
   if (GetH_B_G_D (GetcaseMatLabyrinthe(&pJeu->Laby, &coordx, &coordy),&direct) == false)
 {
if (i==x)
   {
    mvwprintw( win,j, i-1, "|"); // gauche
   }
}

  direct=2;

if (GetH_B_G_D (GetcaseMatLabyrinthe(&pJeu->Laby, &coordx, &coordy),&direct) == false)
 {

  mvwprintw( win,j, i+2, "|"); //droite
}


coordy++;
  }

coordx++;

}

affichJoueur (&pJeu->joueur, x, y , win);

//refresh();
c = wgetch(win);
init_pair(1, COLOR_BLACK, COLOR_BLACK);
wattron(win,COLOR_PAIR(1));
affichPrecedent(posPreced, x,y, win);

wattroff(win,COLOR_PAIR(1));
switch(c)
{
case KEY_RIGHT:
    direct=2;
    jeuDeplacement(pJeu,&direct);
    affichJoueur (&pJeu->joueur, x, y , win);
    posPreced.x=pJeu->joueur.x;
    posPreced.y=pJeu->joueur.y;
break;

case KEY_LEFT:
    direct=4;
    jeuDeplacement(pJeu,&direct);
    affichJoueur (&pJeu->joueur, x, y , win);
    posPreced.x=pJeu->joueur.x;
    posPreced.y=pJeu->joueur.y;
break;

case KEY_UP:
    direct=1;
    jeuDeplacement(pJeu,&direct);
    affichJoueur (&pJeu->joueur, x, y , win);
    posPreced.x=pJeu->joueur.x;
    posPreced.y=pJeu->joueur.y;
break;

case KEY_DOWN:
    direct=3;
    jeuDeplacement(pJeu,&direct);
    affichJoueur (&pJeu->joueur, x, y , win);
    posPreced.x=pJeu->joueur.x;
    posPreced.y=pJeu->joueur.y;
break;

case 27:
ok = false;
break;
}
refresh();
} while(ok);


endwin();


}












>>>>>>> .r48
